function [out] = twos_complement(in)

% SYNTAX:
%   [out] = twos_complement(in)
%
% INPUT:
%   in = n-bit sequence in two's complement
%
% OUTPUT:
%   out = signed decimal value
%
% DESCRIPTION:
%   Two's complement to signed decimal

%----------------------------------------------------------------------------------------------
%                           goGPS v0.4.3
%
% Copyright (C) 2009-2014 Mirko Reguzzoni, Eugenio Realini
%----------------------------------------------------------------------------------------------
%
%    This program is free software: you can redistribute it and/or modify
%    it under the terms of the GNU General Public License as published by
%    the Free Software Foundation, either version 3 of the License, or
%    (at your option) any later version.
%
%    This program is distributed in the hope that it will be useful,
%    but WITHOUT ANY WARRANTY; without even the implied warranty of
%    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%    GNU General Public License for more details.
%
%    You should have received a copy of the GNU General Public License
%    along with this program.  If not, see <http://www.gnu.org/licenses/>.
%----------------------------------------------------------------------------------------------

if in(1) =='1'                   %bit reversal
    for i = 1 : length(in)
        if in(i) == '1'
            out(i) = '0';
        else
            out(i) = '1';
        end
    end
    out = -fbin2dec(out) - 1;
else
    out = fbin2dec(in);
end